package cn.mrcode.fd.blog.services;

import cn.mrcode.fd.blog.entity.Category;

import java.util.List;

/**
 * 文章分类列表服务
 *
 * @author : zhuqiang
 * @version : V1.0
 * @date : 2016/1/1 16:07
 */
public interface ICategoryService {
    /**
     * 处理分类：
     *  1. 处理好了分类的引用数量
     *
     * @param articleId     文章id
     * @param userAccount   用户id
     * @param categoryNames 分类名称
     */
    void handerCategory(String articleId, String userAccount, String categoryNames);

    /**
     * 删除该文章的分类引用
     * @param articleId
     */
    void delRef(String articleId);

    /**
     * 按用户账户查询分类列表
     * @param userAccount
     * @return
     */
    List<Category> findAllByAccount(String userAccount);

    /**
     * 查询该文章所引用的分类
     * @param articleId
     * @return
     */
    List<Category> findArticleCat(String articleId);

    /**
     * !!! 只适合文章量少的情况下
     * 重新计算网站所有用户的分类统计数量
     *  1. 重置所有分类引用数量为0
     *  2. 查找所有分类表记录
     *  3. 遍历循环为每一个匹配的分类引用数量增加1
     * */
    void recountAllNum();

    void catByArtId(String artId, String catId, boolean isAdd);
}
